package jp.co.dailyReport.dailyReport;

import java.util.Calendar;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;

/**
 * 日報クラス
 */
public class DailyReport {

	//日報ID
	protected int dailyReportId;
	//社員ID
	protected int staffId;
	//作業日
	protected Calendar workDate;
	//作業開始時間
	protected Calendar workingStartHours;
	//作業終了時間
	protected Calendar workingEndHours;
	//作業時間合計
	protected double totalWorkingHours;
	//作業内容詳細
	protected String workDetail;
	//問題点
	protected String problem;
	//TODO
	protected String toDo;
	//感想
	protected String comment;
	//削除フラグ
	protected boolean delFlg;
	//更新日
	protected Calendar upDay;
	//日報作業項目
	protected List dailyReportWorkItemList = new ArrayList();

	/**
	 * 日報IDを設定します。
	 * 
	 * @param dailyReportId 日報ID
	 */
	public void setDailyReportId(int dailyReportId) {
		this.dailyReportId = dailyReportId;
	}

	/**
	 * 日報IDを取得します。
	 * 
	 * @return dailyReportId
	 */
	public int getDailyReportId() {
		return dailyReportId;
	}

	/**
	 * 社員IDを設定します。
	 * 
	 * @param staffId 社員ID
	 */
	public void setStaffId(int staffId) {
		this.staffId = staffId;
	}

	/**
	 * 社員IDを取得します。
	 * 
	 * @return staffId
	 */
	public int getStaffId() {
		return staffId;
	}

	/**
	 * 作業日を設定します。
	 * 
	 * @param workDate 作業日
	 */
	public void setWorkDate(Calendar workDate) {
		this.workDate = workDate;
	}

	/**
	 * 作業日を取得します。
	 * 
	 * @return workDate
	 */
	public Calendar getWorkDate() {
		return workDate;
	}

	/**
	 * 作業開始時間を設定します。
	 * 
	 * @param workingStartHours 作業開始時間
	 */
	public void setWorkingStartHours(Calendar workingStartHours) {
		this.workingStartHours = workingStartHours;
	}

	/**
	 * 作業開始時間を取得します。
	 * 
	 * @return workingStartHours
	 */
	public Calendar getWorkingStartHours() {
		return workingStartHours;
	}

	/**
	 * 作業終了時間を設定します。
	 * 
	 * @param workingEndHours 作業終了時間
	 */
	public void setWorkingEndHours(Calendar workingEndHours) {
		this.workingEndHours = workingEndHours;
	}

	/**
	 * 作業終了時間を取得します。
	 * 
	 * @return workingEndHours
	 */
	public Calendar getWorkingEndHours() {
		return workingEndHours;
	}

	/**
	 * 作業時間合計を設定します。
	 * 
	 * @param totalWorkingHours 作業時間合計
	 */
	public void setTotalWorkingHours(double totalWorkingHours) {
		this.totalWorkingHours = totalWorkingHours;
	}

	/**
	 * 作業時間合計を取得します。
	 * 
	 * @return totalWorkingHours
	 */
	public double getTotalWorkingHours() {
		return totalWorkingHours;
	}

	/**
	 * 作業内容詳細を設定します。
	 * 
	 * @param workDetail 作業内容詳細
	 */
	public void setWorkDetail(String workDetail) {
		this.workDetail = workDetail;
	}

	/**
	 * 作業内容詳細を取得します。
	 * 
	 * @return workDetail
	 */
	public String getWorkDetail() {
		return workDetail;
	}

	/**
	 * 問題点を設定します。
	 * 
	 * @param problem 問題点
	 */
	public void setProblem(String problem) {
		this.problem = problem;
	}

	/**
	 * 問題点を取得します。
	 * 
	 * @return problem
	 */
	public String getProblem() {
		return problem;
	}

	/**
	 * TODOを設定します。
	 * 
	 * @param toDo TODO
	 */
	public void setToDo(String toDo) {
		this.toDo = toDo;
	}

	/**
	 * TODOを取得します。
	 * 
	 * @return toDo
	 */
	public String getToDo() {
		return toDo;
	}

	/**
	 * 感想を設定します。
	 * 
	 * @param comment 感想
	 */
	public void setComment(String comment) {
		this.comment = comment;
	}

	/**
	 * 感想を取得します。
	 * 
	 * @return comment
	 */
	public String getComment() {
		return comment;
	}

	/**
	 * 削除フラグを設定します。
	 * 
	 * @param delFlg 削除フラグ
	 */
	public void setDelFlg(boolean delFlg) {
		this.delFlg = delFlg;
	}

	/**
	 * 削除フラグを取得します。
	 * 
	 * @return delFlg
	 */
	public boolean isDelFlg() {
		return delFlg;
	}

	/**
	 * 更新日を設定します。
	 * 
	 * @param upDay 更新日
	 */
	public void setUpDay(Calendar upDay) {
		this.upDay = upDay;
	}

	/**
	 * 更新日を取得します。
	 * 
	 * @return upDay
	 */
	public Calendar getUpDay() {
		return upDay;
	}

	/**
	 * 日報作業項目オブジェクトの配列を設定します。
	 * 
	 * @param dailyReportWorkItems 日報作業項目オブジェクトの配列
	 */
	public void setDailyReportWorkItems(DailyReportWorkItem[] dailyReportWorkItems) {
		for(int i=0; i<dailyReportWorkItems.length; i++){
			dailyReportWorkItemList.add(dailyReportWorkItems[i]);
		}
	}

	/**
	 * 指定した要素番号の日報作業項目オブジェクトを取得します。
	 * 
	 * @param n 要素番号
	 * @return dailyReportWorkItem
	 */
	public DailyReportWorkItem getDailyReportWorkItem(int n) {
	  return (DailyReportWorkItem)dailyReportWorkItemList.get(n);
	}

	/**
	 * 日報作業項目オブジェクトの配列を取得します。
	 * 
	 * @return dailyReportWorkItems
	 */
	public DailyReportWorkItem[] getDailyReportWorkItems() {

		List dailyReportWorkItems = new ArrayList();
		Iterator it = dailyReportWorkItemList.iterator();
		while(it.hasNext()){
			DailyReportWorkItem dailyReportWorkItem = (DailyReportWorkItem)it.next();
			dailyReportWorkItems.add(dailyReportWorkItem);
		}
		return (DailyReportWorkItem[])dailyReportWorkItems.toArray(new DailyReportWorkItem[0]);
	}

	/**
	 * 日報作業項目オブジェクトの配列を削除します。
	 */
	public void initDailyReportWorkItems(){
	  this.dailyReportWorkItemList.clear();
	}
}